﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mjolnir.InfraEstrutura.Servicos;

namespace Mjolnir.Modelo.Ponteiros
{
  public class ServicoPonteiro3D : ServicoBase<Ponteiro3D, FabricaPonteiro3D>, IServicoPonteiro3D
  {
    /// <summary>
    /// Criar uma array (createArray).
    /// </summary>
    /// <param name="numero">numero.</param>
    /// <returns></returns>
    public Ponteiro3D[] criarArray(int numero)
    {
      Ponteiro3D[] retorno = fabrica.criar(numero);

      for (int i = 0; i < numero; i++)
      {
        retorno[i] = fabrica.criar();
      }

      return retorno;
    }

    /// <summary>
    /// Setar o valor (setValue).
    /// </summary>
    /// <param name="fonte">The fonte.</param>
    public void setarValor(Ponteiro3D fonte)
    {
      entidade.x = fonte.x;
      entidade.y = fonte.y;
      entidade.z = fonte.z;
    }

    /// <summary>
    /// Distancia da fonte especificada (dist).
    /// </summary>
    /// <param name="fonte">fonte.</param>
    /// <returns></returns>
    public double distancia(Ponteiro3D fonte)
    {
      double x = entidade.x - fonte.x;
      double y = entidade.y - fonte.y;
      double z = entidade.z - fonte.z;

      return Math.Sqrt((x * x) + (y * y) + (z * z));
    }
  }
}
